from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from django.conf import settings


# 生成一个序列化对象（加密秘钥，加密时间5秒）
serializer = Serializer("asddadwdadwdad", 5)
my_dict = {"name": "renshanwen", "age": 23}
secret_dict = serializer.dumps(my_dict)
print(secret_dict)
print("加密后的数据类型：", type(serializer))
# b'eyJpYXQiOjE2MDE2MjcxMzEsImV4cCI6MTYwMTYyNzEzNiwiYWxnIjoiSFM1MTIifQ.eyJuYW1lIjoicmVuc2hhbndlbiIsImFnZSI6MjN9.HO2FYU8a3puivGvic0R6IPyDSP3sIsMKaY_3CYUsfDh5i2ZMbmhjh0SdsspGe1aBIWhpZvmhRqXU0WV25kwoaA'
# 加密后的数据类型： <class 'itsdangerous.jws.TimedJSONWebSignatureSerializer'>

string_dict = secret_dict.decode()
print(string_dict)
print("解码后的类型：", type(string_dict))

# eyJleHAiOjE2MDE2MjcyODIsImFsZyI6IkhTNTEyIiwiaWF0IjoxNjAxNjI3Mjc3fQ.eyJuYW1lIjoicmVuc2hhbndlbiIsImFnZSI6MjN9.GZkToalENwjfPXVBsysDey8Aix16oZDcX0AA1K2i9s8AIkPA12kWO-Lzxmkq12WtNzVi6jN9Cunstp_Fe5Vk6w
# 解码后的类型： <class 'str'>

# str直接进行解密效果：
no_dict = serializer.loads(string_dict)
print(no_dict)
print("str直接解密后的数据类型：", type(no_dict))
# {'name': 'renshanwen', 'age': 23}
# str直接解密后的数据类型： <class 'dict'>

# 将byte类型解密效果：
no_dict2 = serializer.loads(secret_dict)
print(no_dict2)
print("str直接解密后的数据类型：", type(no_dict2))
# {'name': 'renshanwen', 'age': 23}
# str直接解密后的数据类型： <class 'dict'>

# 结论：对于TimedJSONWebSignatureSerializer，加密会将字典加密成字节形式，而对于解密无论是字节还是字符串都会解密成字典格式